package com.kfm.set;

import com.kfm.exec.Person;
import com.kfm.exec.Student;

import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.function.Consumer;

public class Demo {

    public static void main(String[] args) {
        // 接口 8 static default 9 新增 private 方法
        // List list = List.of(1, 2, 3);
        // System.out.println(list);
        // Set set = Set.of(1, 2, 3);
        // System.out.println(set);
        // // for循环（不可以遍历set集合）
        // // 1. 增强for循环
        // for (Object i : set) {
        //     System.out.println(i);
        // }
        // // 2. 迭代器
        // Iterator iterator = set.iterator();
        // while (iterator.hasNext()) {
        //     System.out.println(iterator.next());
        // }
        // // 3. forEach()
        // set.forEach(new Consumer() {
        //     @Override
        //     public void accept(Object o) {
        //         System.out.println(o);
        //     }
        // });

        HashSet hashSet = new HashSet();
        // Student stu1 = new Student();
        // Student stu2 = new Student();
        // Student stu3 = new Student();
        // Student stu4 = new Student();
        Person p1 = new Person("sky", 18, '男');
        Person p6 = new Person("sky", 18, '男');
        Person p2 = new Person("zyp", 17, '女');
        Person p3 = new Person("xwq", 17, '男');
        Person p4 = new Person("bxy", 17, '女');
        Person p5 = new Person("yyp", 17, '女');

        // 存储值的时候 通过 equals 判断两个元素是否相等 如果没有重写该方法 直接判断地址
        // 计算存储的 hash 值 来寻找位置
        hashSet.add(p1);
        hashSet.add(p1);  // 两个地址完全一样
        hashSet.add(p6);  // 两个的地址不一样，
        hashSet.add(p2);
        hashSet.add(p3);
        hashSet.add(p4);
        hashSet.add(p5);
        hashSet.add(null);

        hashSet.forEach(o -> System.out.println(o));


    }
}
